import java.util.Scanner;

public class Test {
    //运算符的学习
    public static void main1(String[] args) {
        //运算符
        //基本四则运算符+，-，*，/，%
        System.out.println(5/2);                //2
        System.out.println((float) 5/2);        //2.5
        System.out.println(5/(float)2);         //2.5
        System.out.println((float) (5/2));      //2.0
        System.out.println("===============");
        System.out.println(10%3);               // 1
        System.out.println(10%-3);              // 1
        System.out.println(-10%3);              //-1
        System.out.println(-10%-3);             //-1

        //增量运算符+=，-=，*=，/=，%=
        long d = 100;
        int c =10;
        c += d; //相比于c = c + d;不会报错（long类型赋值给int类型）
                //增量运算符会帮我们进行类型转化，即 c = (int) (c + d);

        //自增自减运算符++，--

        //关系运算符 ==，!=，>，<，>=，<=（其结果为true或false）
        //System.out.println(3 < c < 100);    //Java中会报错,3<c返回的结果是true/false,而boolean类型不能和5进行比较
                                              //C/C++中不会报错,3<c返回的结果是0/1,能和5进行比较
        //逻辑运算符 &&，||，~
        System.out.println("===============");
        System.out.println((10>20) && (10/0==0));   //逻辑运算符有短路求值的特点，按理来说右侧会抛异常，但左侧表达式会直接确定结果
                                                    //所以不会去计算右侧表达式，不会抛出异常,而是会正确运行
                                                    //& , | 表示逻辑与，逻辑或，但没有短路求值的特点，会抛出异常-->不建议这样写

        //位运算符 &（按位与） ，|（按位或） ，~（按位取反），^（按位异或）

        //位移运算符 <<（左移运算符）,>>（右移运算符）,>>>（无符号右移）

        //条件运算符 表达式1?表达式2:表达式3 -->注意，条件运算符不能单独存在，其结果必须要被接受
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;    //表达式2和表达式3的结果要是同类型的，除非能发生隐式类型转换

        //运算符的优先级最简单的方法就是加括号

    }

    //逻辑控制的学习
    public static void main(String[] args) {
        //if-else语句
        int num = 10;
        if(num > 0){
            System.out.println("正数");
        } else if (num < 0){
            System.out.println("负数");
        } else {
            System.out.println("0");
        }

        //switch语句
        System.out.println("=====================");
        int a = 1;
        switch (a){
            case 1:
                System.out.println("aa");
                break;
            case 2:
                System.out.println("bb");
                break;
            case 3:
                System.out.println("cc");
                break;
            default:
                System.out.println("dd");
                break;
        }

        //while循环
        System.out.println("=====================");    //既能被3整除也能被4整除的数，使用continue
        int num1 = 100;
        while (num1 <= 200){
            if(num1 % 3 != 0 || num1 % 4 != 0){
                num1++;
                continue;
            }
            System.out.println(num1);
            num1++;
        }
        //break 让循环提前结束
        //continue 跳过这次循环，立即进入下次循环

        //for循环
        System.out.println("=====================");    //求1~5的阶乘的和
        int sum = 0;
        for (int j = 1; j <=5 ; j++) {
            int ret = 1;
            for (int i = 1; i <= j; i++) {
                ret *= i;
            }
            sum += ret;
        }
        System.out.println(sum);

        //do-while循环
        System.out.println("=====================");
        int num2 = 0;
        do {
            System.out.println(num2);
        }while (num2 != 0);

        //输出
        System.out.println("=====================");
        System.out.println("println-->输出且换行");
        System.out.print("print-->输出不换行\n");
        System.out.printf("printf-->格式化输出%d\n",10);

        //输入-->要导入包Scanner
        //一次读取单个数据
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入你的姓名");
        String name = scan.nextLine();  //nextLine-->读入一行 next-->是遇到空格就结束
        System.out.println("姓名：" + name);
        System.out.println("请输入你的年龄");
        int age = scan.nextInt();       //nextInt-->读入一个整数
        System.out.println("年龄：" + age);
        System.out.println("请输入你的工资");
        float salary = scan.nextFloat();
        System.out.println("工资：" + salary);
        scan.close();           //new申请的空间，用完后一定要释放
        //一次读取多组数据
        Scanner scan1 = new Scanner(System.in);
        while (scan1.hasNextInt()) {
            int age1 = scan.nextInt();
            System.out.println(age);
        }
        scan1.close();          //new申请的空间，用完后一定要释放

    }


}
